'use strict'

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = (app) => {
  const { router, controller, io } = app
  router.get('/', controller.users.index)
  const nsp = io.of('/devin')
  // socket.io
  nsp.route('chat', io.controller.chat.index) // websocket

  nsp.on('connection', function (socket) {
    nsp.emit('hi', { msg: 'Hi Vue' })
  })

  /**
   * code
   */
  router.get('/api/code', controller.users.getCode)
  router.get('/api/loginCode', controller.svgCaptcha.codeforLogin)
  router.post('/api/test-login', controller.svgCaptcha.login)

  // rbac
  router.get('/api/rbac', controller.rbac.auth)

  // buffer bufferCache
  router.get('/api/cache', controller.buffer.bufferCache)

  /**
   * users:
   */
  // 验证码接口
  router.get('/api/users/loginCode', controller.users.loginCode)
  // users
  router.post('/api/users/login', controller.users.login)
  // 注册
  router.post('/api/users/register', controller.users.register)
  // 查询用户
  router.get('/api/users/list', controller.users.findUsers)
  // 搜索接口
  router.get('/api/users/search', controller.users.usersSearch)

  // 测试csrf 接口

  router.get('/api/get-test', controller.csrf.getCsrf)
  router.post('/api/post-test', controller.csrf.postCsrf)

  /**
   * Restful api : 一个url 不同的请求方式
   * blogs:
   */
  // 博客查询
  router.get('/api/blogs/list', controller.blogs.findBlogsList)
  // 博客添加
  router.post('/api/blogs/list', controller.blogs.addBlogsItem)
  // 博客修改
  router.put('/api/blogs/list', controller.blogs.updateBlogsItem)
  // 博客删除
  router.delete('/api/blogs/list', controller.blogs.deleteBlogsItem)

  // 博客模糊搜索接口
  router.get('/api/blogs/search', controller.blogs.blogsSearch)

  /**
   * 其他接口（上传图片接口，第三方登陆接口，webSocket通信接口）
   */
  router.post('/api/upload', controller.upload.upload)
  // 第三方登陆
  router.get('/api/oauth/redirect', controller.auth.auth)
}
